/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package managedBeans;

import controladores.GestionClienteCont;
import tools.Utilidad;
import java.io.Serializable;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import org.apache.log4j.Logger;
import org.primefaces.component.datatable.DataTable;
import org.primefaces.context.RequestContext;

/**
 *
 * @author ricardo
 */
@ManagedBean
@ViewScoped
public class Cliente implements Serializable {

    private modelos.pojos.Cliente cliente;
    private DataTable tablaClientes;
    private Boolean noPermitirEdicion = true;
    protected Logger log = Logger.getLogger(Cliente.class);

    /** Creates a new instance of Cliente */
    public Cliente() {
        cliente = new modelos.pojos.Cliente();
    }

    public modelos.pojos.Cliente getCliente() {
        return cliente;
    }

    public void setCliente(modelos.pojos.Cliente cliente) {
        this.cliente = cliente;
    }

    public Boolean getNoPermitirEdicion() {
        return noPermitirEdicion;
    }

    public void setNoPermitirEdicion(Boolean noPermitirEdicion) {
        this.noPermitirEdicion = noPermitirEdicion;

    }

    public void desbloquear() {
        this.noPermitirEdicion = false;
        FacesContext context = FacesContext.getCurrentInstance();
        context.addMessage(null, new FacesMessage("Campos Habilitados", "Ahora puede modificar la información"));
    }

    public DataTable getTablaClientes() {
        return tablaClientes;
    }

    public void setTablaClientes(DataTable tablaClientes) {
        this.tablaClientes = tablaClientes;
    }

    public List<modelos.pojos.Cliente> listar() {
        return GestionClienteCont.listarClientes("");
    }

    public void crearCliente() {
        String mensajeConfirmacion = GestionClienteCont.crearCliente(cliente);
        FacesContext context = FacesContext.getCurrentInstance();
        context.addMessage(null, new FacesMessage("Cliente creado:", mensajeConfirmacion));
    }

    public void consultarCliente() {
        modelos.pojos.Cliente seleccion = (modelos.pojos.Cliente) tablaClientes.getRowData();
        cliente = GestionClienteCont.buscarCliente(seleccion.getCedula());
    }

    public void actualizarCliente() {
        String mensajeConfirmacion = GestionClienteCont.actualizarInformacion(cliente);
        FacesContext context = FacesContext.getCurrentInstance();
        context.addMessage(null, new FacesMessage("Cliente actualizado:", mensajeConfirmacion));
        noPermitirEdicion = true;
    }

    public void desactivarCliente(boolean flag) {
        if (flag) {
            modelos.pojos.Cliente seleccion = (modelos.pojos.Cliente) tablaClientes.getRowData();
            cliente = GestionClienteCont.buscarCliente(seleccion.getCedula());
        } else {
            cliente = GestionClienteCont.buscarCliente(cliente.getCedula());
        }
        String mensaje = null;
        RequestContext rc = RequestContext.getCurrentInstance();
        if (cliente != null) {
            mensaje = GestionClienteCont.modificarEstado(cliente.getCedula(), Utilidad.invertirEstado(cliente.getEstado()));
            rc.addCallbackParam("conf", true);
        } else {
            mensaje = "No existe cliente con la cédula especificada";
            rc.addCallbackParam("conf", false);
        }
        FacesContext context = FacesContext.getCurrentInstance();
        context.addMessage(null, new FacesMessage(mensaje));
    }
}
